import java.util.PriorityQueue;

//最后一块石头的重量
//测试链接 https://leetcode.cn/problems/last-stone-weight/
public class LastStoneWeight {
    public int lastStoneWeight(int[] stones) {
        //创建大根堆
        PriorityQueue<Integer> pq = new PriorityQueue<>((a, b) -> (b-a));
        //将数据全部放入大堆中
        for(int n : stones) {
            pq.add(n);
        }

        while(pq.size() > 1){
            //取出堆顶两个最大的元素
            int top1 = pq.poll();
            int top2 = pq.poll();
            if(top1 > top2) {
                pq.add(top1 - top2);
            }
        }

        if(pq.size() == 0) {
            return 0;
        }
        return pq.poll();
    }
}
